package design2;

/**
 * 加法算式子类
 */
public class AdditionOperation extends BinaryOperation {
    
    /**
     * 默认构造方法
     */
    public AdditionOperation() {
        super();
        this.operator = '+';
        generateAdditionOperation();
    }
    
    /**
     * 带参数构造方法
     */
    public AdditionOperation(int left, int right) {
        super(left, right, '+');
    }
    
    /**
     * 实现抽象方法 - 计算加法结果
     */
    @Override
    public int calculate() {
        return leftOperand + rightOperand;
    }
    
    /**
     * 实现抽象方法 - 检查加法算式合法性
     */
    @Override
    public boolean checkingCalculation() {
        return leftOperand >= 0 && rightOperand >= 0;
    }
    
    /**
     * 重写生成加法算式方法
     */
    @Override
    protected void generateAdditionOperation() {
        this.leftOperand = random.nextInt(100);
        this.rightOperand = random.nextInt(100);
        this.operator = '+';
    }
}